#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
#include<time.h>
//类型重定义
typedef int HPDataType;
//定义堆的结构 -- 数组
typedef struct Heap
{
	//指向堆的指针
	HPDataType* arr;
	//有效的数据个数
	int size;
	//空间大小
	int capacity;
}HP;

//堆的初始化
void HPInit(HP* php);
//堆的销毁
void HPDestroy(HP* php);
//堆的插入
void HPPush(HP* php, HPDataType x);
//取堆顶数据
HPDataType HPTop(HP* php);
// 删除堆顶的数据
void HPPop(HP* php);
// 判空
bool HPEmpty(HP* php);
//求size
int HPSize(HP* php);
//向上调整算法
void AdjustUp(HPDataType* a, int child);
//向下调整算法
void AdjustDown(HPDataType* a, int parent, int n);
//交换函数
void Swap(int* x, int* y);
